package com.ctshk.rpc.order.hotel.service;

import com.ctshk.common.dto.payment.CallPayDTO;
import com.ctshk.common.model.AppReq;
import com.ctshk.common.req.pay.NotifyConsumeReq;
import com.ctshk.rpc.order.hotel.dto.h5.HotelOrderDTO;
import com.ctshk.rpc.order.hotel.dto.h5.HotelOrderInfoDTO;
import com.ctshk.rpc.order.hotel.dto.h5.HotelOrderPointsDTO;
import com.ctshk.rpc.order.hotel.dto.h5.HotelPayDTO;
import com.ctshk.rpc.order.hotel.req.h5.HotelCancelOrderReq;
import com.ctshk.rpc.order.hotel.req.h5.HotelOrderPointsReq;
import com.ctshk.rpc.order.hotel.req.h5.HotelOrderSubmitReq;


/**
 * @description 酒店订单表 服务类 C端H5
 * @author 谢诗宏
 * @date 2021/4/22
 */
public interface IHotelOrderH5Service {

    /**
     * 获取当前订单可使用与可获得星赏会积分-h5/pc
     * @param req
     * @return
     */
    HotelOrderPointsDTO starvipPoints(HotelOrderPointsReq req, long userId);

    /**
     * 提交订单
     * @param req
     * @return
     */
    HotelOrderDTO submit(HotelOrderSubmitReq req, AppReq appReq);

    /**
     * 支付模块查询订单信息
     * @param orderId
     * @return
     */
    CallPayDTO getCallPayInfo(long orderId);

    /**
     * 支付
     * @param notifyConsumeReq
     * @return
     * @throws Exception
     */
    HotelPayDTO payment(NotifyConsumeReq notifyConsumeReq);

    /**
     * 支付完成
     * @param id
     * @return
     * @throws Exception
     */
    HotelPayDTO paymentFinish(long id);

    /**
     * 取消订单
     */
    Long cancel(HotelCancelOrderReq req);

    /**
     * 订单详情
     */
    HotelOrderInfoDTO detail(long id);
}
